iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0

上一篇我們已使用notebook已經將訓練好的model上傳到MinIO儲存空間, 本篇我們將使用seldon讀取MinIO中的模型檔以完成模型的部署

  • github下載yaml檔
    • secret.yaml
    • seldon_deploy_xgb_cardio_minio.yaml

使用 seldon部署模型

  • 加入secret.yaml
    需要加入secret.yaml. 這個YAML檔的目的是要設定MinIO的連線方式. 完整的文件說明可以參考這裡, 在這個overview網頁中說明串接各種儲存空間的方式與參數

    apiVersion: v1
    kind: Secret
    metadata:
      name: seldon-init-container-secret
    type: Opaque
    stringData:
      RCLONE_CONFIG_S3_TYPE: s3
      RCLONE_CONFIG_S3_PROVIDER: minio
      RCLONE_CONFIG_S3_ENV_AUTH: "false"
      RCLONE_CONFIG_S3_ACCESS_KEY_ID: minioadmin
      RCLONE_CONFIG_S3_SECRET_ACCESS_KEY: minioadmin
      RCLONE_CONFIG_S3_ENDPOINT: http://172.20.3.42:9000
    

    然後執行yaml檔

    kubectl apply -f secret.yaml
    
  • 修改seldon_deploy_xgb_cardio_minio.yaml
    只要修改 modelUri這一行就好了, 將uri指向MinIO的儲存空間. 而s3://seldon-models/cardio這個空間我們已在上一篇將模型上傳到這個路徑.

    kind: SeldonDeployment
    metadata:
      name: xgboost-minio
    spec:
      name: cardio-xgb-minio
      predictors:
        - graph:
            children: []
            implementation: XGBOOST_SERVER
            modelUri: s3://seldon-models/cardio
            envSecretRefName: seldon-init-container-secret
            name: classifier
          name: default
          replicas: 1
    

    然後執行yaml檔

    kubtctl apply -f seldon_deploy_xgb_cardio_minio.yaml
    

    這時可以看到下列pod與service都正常運作中(使用kubtctl get all).
    也可參考Day16的方式查看每一個pod的log以了解seldon為我們做了什麼.

    NAME                                                      READY   STATUS    RESTARTS   AGE
    pod/xgboost-minio-default-0-classifier-54dd7bf68d-77zd7   2/2     Running   0          18h
    
    NAME                                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/xgboost-minio-default              ClusterIP   10.98.251.148   <none>        8000/TCP,5001/TCP   18h
    service/xgboost-minio-default-classifier   ClusterIP   10.106.70.78    <none>        9000/TCP,9500/TCP   18h
    

使用curl確認endpoint

我們仍然使用istio所提供的方式來存取endpoint. 關於endpoint如何組成, 請參考Day 15內容:

  • 取得istio ingress url
  • 取得網址規則(the path for predictions)

然後下這個指令:

curl -X POST -H 'Content-Type: application/json' -d '{"data": {"ndarray": [[80.1,2,168,92.3,150,100,1,1,1,0,1]]}}'  http://172.23.180.10:31655/seldon/default/xgboost-minio/api/v1.0/predictions

回傳結果如下:

{"data":{"names":[],"ndarray":[0.8462969660758972]},"meta":{"requestPath":{"classifier":"seldonio/xgboostserver:1.10.0"}}}

推論的結果顯示該員罹患心血管疾病的機率為84.6%

到這裡我們完成了使用MinIO儲存模型檔案, 並且使用sledon讀取model檔進行部署, 這個方法是不是方便許多呢?(跟使用pvc方式比較). 這的確是一個比較好的整合方式.

參考資料

https://docs.seldon.io/projects/seldon-core/en/latest/servers/overview.html


上一篇
安裝MinIO並從notebook儲存model到MinIO
下一篇
整合架構說明
系列文
AI平台初學者工作坊: 從training、tracking到serving30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言